<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/xhtml;charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=9" http-equiv="X-UA-Compatible"/>
<meta content="Doxygen 1.8.13" name="generator"/>
<title>OpenCV: Images stitching</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script src="../../jquery.js" type="text/javascript"></script>
<script src="../../dynsections.js" type="text/javascript"></script>
<script src="../../tutorial-utils.js" type="text/javascript"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script src="../../search/searchdata.js" type="text/javascript"></script>
<script src="../../search/search.js" type="text/javascript"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" type="text/javascript"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css"/>
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellpadding="0" cellspacing="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
    <span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script src="../../menudata.js" type="text/javascript"></script>
<script src="../../menu.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onkeydown="return searchBox.OnSearchSelectKey(event)" onmouseout="return searchBox.OnSearchSelectHide()" onmouseover="return searchBox.OnSearchSelectShow()">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe frameborder="0" id="MSearchResults" name="MSearchResults" src="javascript:void(0)">
</iframe>
</div>
<div class="header">
  <div class="summary">
<a href="#groups">Modules</a> |
<a href="#nested-classes">Classes</a> |
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Images stitching</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:df/d8c/group__stitching__match"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/d8c/group__stitching__match.html">Features Finding and Images Matching</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:d7/d74/group__stitching__rotation"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d74/group__stitching__rotation.html">Rotation Estimation</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:d4/dbc/group__stitching__autocalib"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dbc/group__stitching__autocalib.html">Autocalibration</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:d0/dfa/group__stitching__warp"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/dfa/group__stitching__warp.html">Images Warping</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:d9/d24/group__stitching__seam"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d24/group__stitching__seam.html">Seam Estimation</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:dd/dff/group__stitching__exposure"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dff/group__stitching__exposure.html">Exposure Compensation</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:d9/d46/group__stitching__blend"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d46/group__stitching__blend.html">Image Blenders</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d0a/structcv_1_1detail_1_1CameraParams.html">cv::detail::CameraParams</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Describes camera parameters.  <a href="../../d4/d0a/structcv_1_1detail_1_1CameraParams.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d3e/classcv_1_1detail_1_1DisjointSets.html">cv::detail::DisjointSets</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dc/d4c/classcv_1_1detail_1_1Graph.html">cv::detail::Graph</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/dca/structcv_1_1detail_1_1GraphEdge.html">cv::detail::GraphEdge</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html">cv::Stitcher</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">High level image stitcher.  <a href="../../d2/d8d/classcv_1_1Stitcher.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dac/classcv_1_1detail_1_1Timelapser.html">cv::detail::Timelapser</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../df/db9/classcv_1_1detail_1_1TimelapserCrop.html">cv::detail::TimelapserCrop</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga7de758260f93bd840c47184aef9b25a2"><td align="right" class="memItemLeft" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#ga7de758260f93bd840c47184aef9b25a2">cv::detail::GraphEdge::GraphEdge</a> (int <a class="el" href="../../d5/dca/structcv_1_1detail_1_1GraphEdge.html#ac4e43b1421e87ba73232f9d502925b49">from</a>, int <a class="el" href="../../d5/dca/structcv_1_1detail_1_1GraphEdge.html#a7ee67c4025576238d703f2b51bdcaa51">to</a>, float <a class="el" href="../../d5/dca/structcv_1_1detail_1_1GraphEdge.html#a9efad8a7b27a03e6029a75413aed60ae">weight</a>)</td></tr>
<tr class="separator:ga7de758260f93bd840c47184aef9b25a2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2de00132401436e7ddc89590994fd922"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html">Stitcher</a> &gt; </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#ga2de00132401436e7ddc89590994fd922">cv::createStitcher</a> (bool try_use_gpu=false)</td></tr>
<tr class="separator:ga2de00132401436e7ddc89590994fd922"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5b928eb0ff52ec148f6cfa89b6a0af25"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html">Stitcher</a> &gt; </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#ga5b928eb0ff52ec148f6cfa89b6a0af25">cv::createStitcherScans</a> (bool try_use_gpu=false)</td></tr>
<tr class="separator:ga5b928eb0ff52ec148f6cfa89b6a0af25"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf9ff38a39051369119b53529b3d779ab"><td align="right" class="memItemLeft" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#gaf9ff38a39051369119b53529b3d779ab">cv::detail::overlapRoi</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> tl1, <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> tl2, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> sz1, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> sz2, <a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> &amp;roi)</td></tr>
<tr class="separator:gaf9ff38a39051369119b53529b3d779ab"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab7d43257ae6a1d607ee195f369d51b67"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#gab7d43257ae6a1d607ee195f369d51b67">cv::detail::resultRoi</a> (const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp;corners, const std::vector&lt; <a class="el" href="../../d7/d45/classcv_1_1UMat.html">UMat</a> &gt; &amp;images)</td></tr>
<tr class="separator:gab7d43257ae6a1d607ee195f369d51b67"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaeb641b2481aa8261c3ee087a38016485"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#gaeb641b2481aa8261c3ee087a38016485">cv::detail::resultRoi</a> (const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp;corners, const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> &gt; &amp;sizes)</td></tr>
<tr class="separator:gaeb641b2481aa8261c3ee087a38016485"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac27a7690523e62854880225ec2020271"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#gac27a7690523e62854880225ec2020271">cv::detail::resultRoiIntersection</a> (const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp;corners, const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> &gt; &amp;sizes)</td></tr>
<tr class="separator:gac27a7690523e62854880225ec2020271"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0714acd404c7b8024017d6d93a0eab3d"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#ga0714acd404c7b8024017d6d93a0eab3d">cv::detail::resultTl</a> (const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp;corners)</td></tr>
<tr class="separator:ga0714acd404c7b8024017d6d93a0eab3d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga73d6882563516f276bda76365d4619ee"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#ga73d6882563516f276bda76365d4619ee">cv::detail::selectRandomSubset</a> (int count, int size, std::vector&lt; int &gt; &amp;subset)</td></tr>
<tr class="separator:ga73d6882563516f276bda76365d4619ee"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7616573f03568a19c14e3333f104b2af"><td align="right" class="memItemLeft" valign="top">int &amp; </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d46/group__stitching.html#ga7616573f03568a19c14e3333f104b2af">cv::detail::stitchingLogLevel</a> ()</td></tr>
<tr class="separator:ga7616573f03568a19c14e3333f104b2af"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a id="details" name="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This figure illustrates the stitching module pipeline implemented in the <a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html" title="High level image stitcher. ">Stitcher</a> class. Using that class it's possible to configure/remove some steps, i.e. adjust the stitching pipeline according to the particular needs. All building blocks from the pipeline are available in the detail namespace, one can combine and use them separately.</p>
<p>The implemented stitching pipeline is very similar to the one proposed in <a class="el" href="../../d0/de3/citelist.html#CITEREF_BL07">[35]</a> .</p>
<div class="image">
<img alt="StitchingPipeline.jpg" src="../../StitchingPipeline.jpg"/>
<div class="caption">
stitching pipeline</div></div>
 <h2>Camera models </h2>
<p>There are currently 2 camera models implemented in stitching pipeline.</p>
<ul>
<li><em>Homography model</em> expecting perspective transformations between images implemented in <a class="el" href="../../d4/d26/classcv_1_1detail_1_1BestOf2NearestMatcher.html">cv::detail::BestOf2NearestMatcher</a> <a class="el" href="../../db/d3e/classcv_1_1detail_1_1HomographyBasedEstimator.html" title="Homography based rotation estimator. ">cv::detail::HomographyBasedEstimator</a> <a class="el" href="../../dc/d54/classcv_1_1detail_1_1BundleAdjusterReproj.html" title="Implementation of the camera parameters refinement algorithm which minimizes sum of the reprojection ...">cv::detail::BundleAdjusterReproj</a> <a class="el" href="../../da/d7c/classcv_1_1detail_1_1BundleAdjusterRay.html" title="Implementation of the camera parameters refinement algorithm which minimizes sum of the distances bet...">cv::detail::BundleAdjusterRay</a></li>
<li><em>Affine model</em> expecting affine transformation with 6 DOF or 4 DOF implemented in <a class="el" href="../../d3/dda/classcv_1_1detail_1_1AffineBestOf2NearestMatcher.html">cv::detail::AffineBestOf2NearestMatcher</a> <a class="el" href="../../d0/df2/classcv_1_1detail_1_1AffineBasedEstimator.html" title="Affine transformation based estimator. ">cv::detail::AffineBasedEstimator</a> <a class="el" href="../../d6/d8d/classcv_1_1detail_1_1BundleAdjusterAffine.html" title="Bundle adjuster that expects affine transformation represented in homogeneous coordinates in R for ea...">cv::detail::BundleAdjusterAffine</a> <a class="el" href="../../d4/dbb/classcv_1_1detail_1_1BundleAdjusterAffinePartial.html" title="Bundle adjuster that expects affine transformation with 4 DOF represented in homogeneous coordinates ...">cv::detail::BundleAdjusterAffinePartial</a> <a class="el" href="../../d4/dd7/classcv_1_1AffineWarper.html" title="Affine warper factory class. ">cv::AffineWarper</a></li>
</ul>
<p>Homography model is useful for creating photo panoramas captured by camera, while affine-based model can be used to stitch scans and object captured by specialized devices. Use <a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html#a308a47865a1f381e4429c8ec5e99549f">cv::Stitcher::create</a> to get preconfigured pipeline for one of those models.</p>
<dl class="section note"><dt>Note</dt><dd>Certain detailed settings of <a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html">cv::Stitcher</a> might not make sense. Especially you should not mix classes implementing affine model and classes implementing Homography model, as they work with different transformations. </dd></dl>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga7de758260f93bd840c47184aef9b25a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7de758260f93bd840c47184aef9b25a2">◆ </a></span>GraphEdge()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cv::detail::GraphEdge::GraphEdge </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>to</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>weight</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
</div>
</div>
<a id="ga2de00132401436e7ddc89590994fd922"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2de00132401436e7ddc89590994fd922">◆ </a></span>createStitcher()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt;<a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html">Stitcher</a>&gt; cv::createStitcher </td>
          <td>(</td>
          <td class="paramtype">bool </td>
          <td class="paramname"><em>try_use_gpu</em> = <code>false</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../dc/d7a/stitching_8hpp.html">opencv2/stitching.hpp</a>&gt;</code></p>
<dl class="deprecated"><dt><b><a class="el" href="../../da/d58/deprecated.html#_deprecated000050">Deprecated:</a></b></dt><dd>use <a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html#a308a47865a1f381e4429c8ec5e99549f" title="Creates a Stitcher configured in one of the stitching modes. ">Stitcher::create</a> </dd></dl>
</div>
</div>
<a id="ga5b928eb0ff52ec148f6cfa89b6a0af25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5b928eb0ff52ec148f6cfa89b6a0af25">◆ </a></span>createStitcherScans()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt;<a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html">Stitcher</a>&gt; cv::createStitcherScans </td>
          <td>(</td>
          <td class="paramtype">bool </td>
          <td class="paramname"><em>try_use_gpu</em> = <code>false</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../dc/d7a/stitching_8hpp.html">opencv2/stitching.hpp</a>&gt;</code></p>
<dl class="deprecated"><dt><b><a class="el" href="../../da/d58/deprecated.html#_deprecated000051">Deprecated:</a></b></dt><dd>use <a class="el" href="../../d2/d8d/classcv_1_1Stitcher.html#a308a47865a1f381e4429c8ec5e99549f" title="Creates a Stitcher configured in one of the stitching modes. ">Stitcher::create</a> </dd></dl>
</div>
</div>
<a id="gaf9ff38a39051369119b53529b3d779ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf9ff38a39051369119b53529b3d779ab">◆ </a></span>overlapRoi()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool cv::detail::overlapRoi </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> </td>
          <td class="paramname"><em>tl1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> </td>
          <td class="paramname"><em>tl2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>sz1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>sz2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> &amp; </td>
          <td class="paramname"><em>roi</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.overlapRoi(</td><td class="paramname">tl1, tl2, sz1, sz2, roi</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
</div>
</div>
<a id="gab7d43257ae6a1d607ee195f369d51b67"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab7d43257ae6a1d607ee195f369d51b67">◆ </a></span>resultRoi() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> cv::detail::resultRoi </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp; </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../d7/d45/classcv_1_1UMat.html">UMat</a> &gt; &amp; </td>
          <td class="paramname"><em>images</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.resultRoi(</td><td class="paramname">corners, images</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.resultRoi(</td><td class="paramname">corners, sizes</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="../../d9/dd8/samples_2cpp_2stitching_detailed_8cpp-example.html#a55">samples/cpp/stitching_detailed.cpp</a>.</dd>
</dl>
</div>
</div>
<a id="gaeb641b2481aa8261c3ee087a38016485"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeb641b2481aa8261c3ee087a38016485">◆ </a></span>resultRoi() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> cv::detail::resultRoi </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp; </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> &gt; &amp; </td>
          <td class="paramname"><em>sizes</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.resultRoi(</td><td class="paramname">corners, images</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.resultRoi(</td><td class="paramname">corners, sizes</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
</div>
</div>
<a id="gac27a7690523e62854880225ec2020271"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac27a7690523e62854880225ec2020271">◆ </a></span>resultRoiIntersection()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga11d95de507098e90bad732b9345402e8">Rect</a> cv::detail::resultRoiIntersection </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp; </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> &gt; &amp; </td>
          <td class="paramname"><em>sizes</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.resultRoiIntersection(</td><td class="paramname">corners, sizes</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
</div>
</div>
<a id="ga0714acd404c7b8024017d6d93a0eab3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0714acd404c7b8024017d6d93a0eab3d">◆ </a></span>resultTl()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> cv::detail::resultTl </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; <a class="el" href="../../dc/d84/group__core__basic.html#ga1e83eafb2d26b3c93f09e8338bcab192">Point</a> &gt; &amp; </td>
          <td class="paramname"><em>corners</em></td><td>)</td>
          <td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.resultTl(</td><td class="paramname">corners</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
</div>
</div>
<a id="ga73d6882563516f276bda76365d4619ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga73d6882563516f276bda76365d4619ee">◆ </a></span>selectRandomSubset()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::detail::selectRandomSubset </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; int &gt; &amp; </td>
          <td class="paramname"><em>subset</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>None</td><td>=</td><td>cv.detail.selectRandomSubset(</td><td class="paramname">count, size, subset</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
</div>
</div>
<a id="ga7616573f03568a19c14e3333f104b2af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7616573f03568a19c14e3333f104b2af">◆ </a></span>stitchingLogLevel()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int&amp; cv::detail::stitchingLogLevel </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.detail.stitchingLogLevel(</td><td class="paramname"></td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d06/modules_2stitching_2include_2opencv2_2stitching_2detail_2util_8hpp.html">opencv2/stitching/detail/util.hpp</a>&gt;</code></p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:41 for OpenCV by  <a href="http://www.doxygen.org/index.html">
<img alt="doxygen" class="footer" src="../../doxygen.png"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
